package edu.erpan.fachada;

import java.util.List;

import com.ibytecode.util.JNDILookup;

import edu.erpan.bl.bean.OrdenPedidoBean;
import edu.erpan.bl.bean.OrdenPedidoBeanRemote;
import edu.erpan.bl.dto.ConsumoMateriaPrima;
import edu.erpan.bl.entities.Cliente;
import edu.erpan.bl.entities.LineaPedido;
import edu.erpan.bl.entities.Pedido;
import edu.erpan.util.entityManager.exceptions.IdNotFoundException;
import edu.erpan.util.entityManager.exceptions.PersistException;
import edu.erpan.util.entityManager.exceptions.QueryException;

public class OrdenPedidoFachada implements IOrdenPedidoFachada{

	@Override
	public Pedido consultarPedido(Pedido pedido) throws QueryException,
			IdNotFoundException {
		OrdenPedidoBeanRemote ordenPedido=JNDILookup.doLookup(OrdenPedidoBean.class, OrdenPedidoBeanRemote.class);
		return ordenPedido.consultarPedido(pedido);
	}

	@Override
	public List<Pedido> consultarPedidos() throws QueryException {
		OrdenPedidoBeanRemote ordenPedido=JNDILookup.doLookup(OrdenPedidoBean.class, OrdenPedidoBeanRemote.class);
		return ordenPedido.consultarPedidos();
	}

	@Override
	public void guardarPedido(Pedido pedido, List<LineaPedido> lineasPedido)
			throws PersistException {
		OrdenPedidoBeanRemote ordenPedido=JNDILookup.doLookup(OrdenPedidoBean.class, OrdenPedidoBeanRemote.class);
		ordenPedido.guardarPedido(pedido, lineasPedido);
	}

	@Override
	public void editarOrdenPeddido(Pedido pedido) throws PersistException {
		OrdenPedidoBeanRemote ordenPedido=JNDILookup.doLookup(OrdenPedidoBean.class, OrdenPedidoBeanRemote.class);
		ordenPedido.editarOrdenPeddido(pedido);
	}

	@Override
	public void eliminarPedido(Pedido pedido) throws QueryException {
		OrdenPedidoBeanRemote ordenPedido=JNDILookup.doLookup(OrdenPedidoBean.class, OrdenPedidoBeanRemote.class);
		ordenPedido.eliminarPedido(pedido);
	}

	@Override
	public List<LineaPedido> consultarLineasPedido(Pedido pedido)
			throws QueryException {
		OrdenPedidoBeanRemote ordenPedido=JNDILookup.doLookup(OrdenPedidoBean.class, OrdenPedidoBeanRemote.class);
		return ordenPedido.consultarLineasPedido(pedido);
	}

	public List<ConsumoMateriaPrima> calcularConsumoDeMateriaPrima(Pedido pedido) throws QueryException{
		OrdenPedidoBeanRemote ordenPedido=JNDILookup.doLookup(OrdenPedidoBean.class, OrdenPedidoBeanRemote.class);
		return ordenPedido.calcularConsumoDeMateriaPrima(pedido);
	}
	
	public List<ConsumoMateriaPrima> calcularConsumoDeMateriaPrimaTodosLosPedidos() throws QueryException{
		OrdenPedidoBeanRemote ordenPedido=JNDILookup.doLookup(OrdenPedidoBean.class, OrdenPedidoBeanRemote.class);
		return ordenPedido.calcularConsumoDeMateriaPrimaTodosLosPedidos();
	}

	@Override
	public List<Cliente> consultarClientesActivos() throws QueryException {
		OrdenPedidoBeanRemote ordenPedido=JNDILookup.doLookup(OrdenPedidoBean.class, OrdenPedidoBeanRemote.class);
		return ordenPedido.consultarClientesActivos();
	}
}
